package org.ghost.wechat.platform.service;


import org.ghost.wechat.platform.dto.wechat.message.WeChatMsgSendRspDTO;
import org.ghost.wechat.platform.dto.wechat.message.WeChatMsgTemplateDTO;
import org.ghost.wechat.platform.dto.wechat.web.WeChatOpenIdRspDTO;

/**
 * @author 01
 */
public interface IWeChatWebService {
    /**
     * 授权拼接链接
     *
     * @param appId        公众号的唯一标识
     * @param redirectUri  授权后重定向的回调链接地址， 请使用 urlEncode 对链接进行处理
     * @param responseType 返回类型，请填写code
     * @param scope        应用授权作用域，snsapi_base （不弹出授权页面，直接跳转，只能获取用户openid），snsapi_userinfo （弹出授权页面，可通过openid拿到昵称、性别、所在地。并且， 即使在未关注的情况下，只要用户授权，也能获取其信息）
     * @param state        重定向后会带上state参数，开发者可以填写a-zA-Z0-9的参数值，最多128字节
     * @return String
     */
    String getAuthorizeUrl(String appId, String redirectUri, String responseType, String scope, String state);

    /**
     * 通过code获取openId
     *
     * @param appId  公众号的唯一标识
     * @param secret 公众号的appsecret
     * @param code   认证返回的code
     * @return WeChatOpenIdRspDTO
     */
    WeChatOpenIdRspDTO getOpenId(String appId, String secret, String code);

    /**
     * 推送模板消息
     *
     * @param token          唯一标识token
     * @param msgTemplateDTO 消息内容
     * @return
     */
    WeChatMsgSendRspDTO sendTemplateMessage(String token, WeChatMsgTemplateDTO msgTemplateDTO);
}
